const db = require('../db/index')
const path = require('path')

exports.addArticle = (req, res) => {
    // console.log(req.body); //文本类型数据
    // console.log('-------------');
    // console.log(req.file); //文件类型数据

    // 判断是否上传了文件，且这个文件要是文章的封面图片
    if (!req.file || req.file.fieldname !== 'cover_img') return res.cc('文章封面是必选参数！')

    // 先处理要存储到数据库的数据
    const articleInfo = {
        ...req.body, //标题，内容，发布状态，所属类型id
        cover_img: path.join('/uploads', req.file.filename), //存放路径  通过开启静态资源访问，例如 http://127.0.0.1:3000/uploads/文件名  即可访问到
        pub_date: new Date(),  //发布时间
        author_id: req.user.id //作者id
    }
    // console.log(articleInfo);
    const sql = `insert into ev_articles set ?`
    db.query(sql, articleInfo, (err, result) => {
        if (err) return res.cc(err)
        if (result.affectedRows !== 1) return res.cc('发布文章失败')
        res.send({
            status: 0,
            message: '发布文章成功'
        })
    })
}


// 获取文章列表
exports.getArticleList = (req, res) => {
    // mysql的两种分页方式
    // select * from ev_articles where cate_id=2 and state='已发布' limit pagesize*(pagenum-1),pagesize 
    // SELECT * FROM ev_articles where cate_id=2 and state='已发布' limit pagesize offset pagesize*(pagenum-1);
    const sql = `select * from ev_articles where (cate_id=? or ?='' ) and (state=? or ?='' ) limit ?,? `
    db.query(sql, [req.query.cate_id, req.query.cate_id, req.query.state, req.query.state, req.query.pagesize * (req.query.pagenum - 1), req.query.pagesize], (err, result) => {
        if (err) return res.cc(err)
        let resObj = {
            status: 0,
            message: '获取文章列表成功',
            data: result,
            total: 0
        }
        // 查询总数
        const sqlStr = `select count(1) count_number from ev_articles  where (cate_id=? or ?='' ) and (state=? or ?='' ) `
        db.query(sqlStr, [req.query.cate_id, req.query.cate_id, req.query.state, req.query.state], (err, result) => {
            if (err) return res.cc(err)
            // 给总数赋值
            resObj.total = result[0].count_number
            res.send(resObj)
        })
    })
}

// 根据id标记删除文章
exports.deleteArticleById = (req, res) => {
    const sql = `update ev_articles set is_delete=1 where id=?`
    db.query(sql, req.params.id, (err, result) => {
        if (err) return res.cc(err)
        if (result.affectedRows !== 1) return res.cc('删除文章失败')
        res.cc('删除文章成功！', 0)
    })
}

// 根据id获取文章详情
exports.getArticleById = (req, res) => {
    const sql = `select * from ev_articles where id=?`
    db.query(sql, req.params.id, (err, result) => {
        if (err) return res.cc(err)
        if (result.length !== 1) return res.cc('获取文章详细信息失败')
        res.send({
            status: 0,
            message: '获取文章详细信息成功',
            data: result[0]
        })
    })
}

// 根据id修改文章相关内容
exports.editArticleById = (req, res) => {
    if (!req.file || req.file.fieldname !== 'cover_img') return res.cc('文章封面是必选参数！')
    const artObj = {
        ...req.body,
        cover_img: path.join('/uploads', req.file.filename), //存放路径  通过开启静态资源访问，例如 http://127.0.0.1:3000/uploads/文件名  即可访问到
        pub_date: new Date(),  //发布时间
        author_id: req.user.id //作者id
    }
    const sql = `update ev_articles set ? where id=?`
    // 注意大小写 Id
    db.query(sql, [artObj, req.body.Id], (err, result) => {
        if (err) return res.cc(err)
        if (result.affectedRows !== 1) return res.cc('更新文章失败')
        res.cc('更新文章成功', 0)
    })
}